2. 50 observaciones de una \(\mathcal{N}(0,1)\) y otras 50 observaciones de una \(\mathcal{N}(2,1)\). ¿Cómo se verán las 100 caras de Chernoff si \(_X_\) y \(_Y_\) definen la lÃnea de la cara y la oscuridad del cabello?, ¿esperan caras similares?, ¿cuántas caras lucen como oservaciones de \(_Y_\) cuando aún son observaciones de \(_X_\)?
ind = matrix(0, ncol = 36) # define una indicadora para el argumento which.row
ind[,13] = 1 # linea derecha de la cara
ind[,14] = 1 # oscuridad del cabello lado derecho
ind[,31] = 1 # linea izquierda de la cara
ind[,32] = 1 # oscuridad izquierda del cabello
x = rnorm(50)
y = rnorm(50, mean = 2)
z = t(cbind(t(x),t(y))); # arma matriz (100x1)
faces(as.matrix(z[1:50]),ind, main="Observaciones 1 a 50", ncol.plot = 5, nrow.plot = 10) # primeras 50 caras
## effect of variables:
## modified item Var
## "height of face " "Var1"
## "width of face " "Var1"
## "structure of face" "Var1"
## "height of mouth " "Var1"
## "width of mouth " "Var1"
## "smiling " "Var1"
## "height of eyes " "Var1"
## "width of eyes " "Var1"
## "height of hair " "Var1"
## "width of hair " "Var1"
## "style of hair " "Var1"
## "height of nose " "Var1"
## "width of nose " "Var1"
## "width of ear " "Var1"
## "height of ear " "Var1"
faces(as.matrix(z[51:100]),ind, main="Observaciones 51 a 100", ncol.plot = 5, nrow.plot = 10) # primeras 50 caras
## effect of variables:
## modified item Var
## "height of face " "Var1"
## "width of face " "Var1"
## "structure of face" "Var1"
## "height of mouth " "Var1"
## "width of mouth " "Var1"
## "smiling " "Var1"
## "height of eyes " "Var1"
## "width of eyes " "Var1"
## "height of hair " "Var1"
## "width of hair " "Var1"
## "style of hair " "Var1"
## "height of nose " "Var1"
## "width of nose " "Var1"
## "width of ear " "Var1"
## "height of ear " "Var1"
x
## [1] -0.8494389203 0.1673832633 -0.9851555555 1.3335778878 -0.4927753609
## [6] 0.3878075339 -0.3621209266 0.5828111105 -0.4229146116 1.1848290911
## [11] -0.2715836822 1.0093381006 -0.7202280350 -1.0832210407 -0.3465227827
## [16] 0.1085528884 1.2717473167 0.0164488817 -0.1064794849 0.5046773119
## [21] -0.6781567938 0.9553140919 -0.0822488241 0.5644607761 -0.0105044483
## [26] 1.8249231787 -0.1023400157 2.0050558509 -2.1632323251 0.2509712289
## [31] -0.0379816403 -0.0961912095 0.2695928554 0.0009714855 0.4772698033
## [36] -0.3829868439 0.1198018438 -1.0497078969 0.8714243622 0.8911425633
## [41] 1.3207509621 -1.1383203572 0.2028422521 -0.1400127836 1.6871520793
## [46] 1.3665454763 -0.0270843886 -0.4832003758 -0.0048966708 0.9392898789
y
## [1] 1.755303186 1.257929243 3.330931297 1.275845838 3.268315946
## [6] 1.670445305 0.431506407 0.747727519 0.532106277 1.620842625
## [11] 2.071641049 -0.251676790 2.259963141 2.645086444 0.605492328
## [16] 2.435734129 2.274059115 2.354667467 1.797426286 2.775324173
## [21] -0.008547947 1.551748825 2.667584989 1.426770695 2.360703223
## [26] 1.609221152 3.324910692 2.144097896 2.123077877 2.229854644
## [31] 2.266716335 1.462145986 1.378936905 1.566602060 1.355185160
## [36] 2.158894642 3.264626469 1.606787587 2.839406775 1.555191960
## [41] 1.955916687 0.992356829 1.921676475 0.826742847 0.787229079
## [46] 1.634471969 2.551555901 2.268829993 0.327492549 0.485013138
Sà hubo caras similares. Hay 4 payasos en Y comparado con los 3 que hay de X. Hay casi la misma cantidad de caras rojas y cabello verde; hay 4 caras amarillas en Y comparadas con las 10 que hay en X. Las caras rojas son aquellos valores cercanos a 0, mientras que los payasos son los valores más grandes (+/- 3)
3. Consideren los siguientes datos
a. Encuentra la proyección de \(X_1\) sobre 1’=(1,1,1,1,1,1)
# x1 = Nómina de jugadores
x1 <- c(3497900,2485475,1782875,1725450,1645575,1469800)
# Defino al vector de 1 normalizado
ones <- rep(1,6)/sqrt(6)
# Definición de proyección de x1 sobre 1
proy = t(x1) %*% ones %*% ones
proy
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 2101179 2101179 2101179 2101179 2101179 2101179
b. Calcula el vector desviación. Relaciona su longitud a la desviación estándar.
# Definición de vector desviación
vDesv <- x1 - proy
vDesv
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 1396721 384295.8 -318304.2 -375729.2 -455604.2 -631379.2
# Desviación estándar
StanDev <- sd(x1)
StanDev
## [1] 767752.2
Notemos que el cuadrado de la longitud del vector desviación es igual a \(n\times d^2\) donde d es la desviación estándar
# Longitud del vector
norma <- norm(vDesv)
norma^2
## [1] 1.950829e+12
6*(StanDev^2)
## [1] 3.536661e+12
c. Grafica (a escala) el triángulo formado por \(y_1\), \(\bar{x}_1\), \(y_1-\bar{x}_1\). Identifica la longitud de cada vector en tu gráfica
nx1 = norm(x1, type = "2")
nproy = norm(proy, type = "2")
nvDesv = norm(vDesv, type = "2")
x = c(0, nproy/nx1, nproy/nx1)
y = c(0, 0,nvDesv/nx1)
plot(x, y, xlim = c(0,1.1), ylim = c(0, .4))
arrows(0,0, x1 = nproy/nx1, y1 = 0)
arrows(0,0, x1 = nproy/nx1, y1 = nvDesv/nx1)
arrows(nproy/nx1,0, x1 = nproy/nx1, y1 = nvDesv/nx1)
vectores = cbind(x,y)
text(vectores, labels = c(round(nproy/nx1,3),round(nvDesv/nx1,3),1), adj = c(0,-1))
d. Repetir los incisos (a) a (c) para \(X_2\) a’. Encuentra la proyección de \(X_2\) sobre 1’=(1,1,1,1,1,1)
# x2 = % de perdidos-ganados
x2 <- c(0.623,0.593,0.512,0.5,0.463,0.395)
# Definición de proyección de x2 sobre 1
proy2 = t(x2) %*% ones %*% ones
proy2
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.5143333 0.5143333 0.5143333 0.5143333 0.5143333 0.5143333
b’. Calcula el vector de desviación
# Definición de vector desviación
vDesv2 <- x2 - proy2
vDesv2
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.1086667 0.07866667 -0.002333333 -0.01433333 -0.05133333 -0.1193333
# Desviación estándar
StanDev2 <- sd(x2)
StanDev2
## [1] 0.08376555
c’. Grafica (a escala) el triángulo formado por \(y_2\), \(\bar{x}_2\), \(y_2-\bar{x}_2\). Identifica la longitud de cada vector en tu gráfica
nx2 = norm(x2, type = "2")
nproy2 = norm(proy2, type = "2")
nvDesv2 = norm(vDesv2, type = "2")
x = c(0, nproy2/nx2, nproy2/nx2)
y = c(0, 0,nvDesv2/nx2)
plot(x, y, xlim = c(0,1.1), ylim = c(0, .4))
arrows(0,0, x1 = nproy2/nx2, y1 = 0)
arrows(0,0, x1 = nproy2/nx2, y1 = nvDesv2/nx2)
arrows(nproy2/nx2,0, x1 = nproy2/nx2, y1 = nvDesv2/nx2)
vectores = cbind(x,y)
text(vectores, labels = c(round(nproy2/nx2,3),round(nvDesv2/nx2,3),1), adj = c(0,-1))
e. Grafica (a escala) los dos vectores desviación \(y_1-\bar{x}_1\) y \(y_2-\bar{x}_2\). Calcula el valor del ángulo entre ellos
f. Calcula la varianza muestral generalizada (vmg) det(S) para estos datos e interpreta
X <- cbind(x1,x2) # Creo la matriz de X1 y X2
n <- nrow(X)
uno <- rep(1,n)
xBar <- t(X) %*% uno / n # x barra
H <- diag(n) - uno%*%t(uno) / n # H
Sn <- t(X) %*% H %*% X / n # Sn
S <- n/(n-1) * Sn
vmg <- det(S)
vmg
## [1] 844182191
Como la vmg es proporcional al cuadrado del olumen generado por los p vectores de desviación. COmo vmg = 844182191, entonces sabemos que el volumen del elipsoide al cuadrado generado por \(S\), será igual al vmg multiplicado por una constante proveniente de la ecuación del elipsoide correspondiente a \(S\).
g. Calcula la varianza muestral total (vmt) tr(S) para estos datos e interpreta
vmt <- sum(diag(S))
vmt
## [1] 589443426354
Geométricamente, la vmt es la suma de las longitudes al cuadrado de los p vectores de desviación divididos entre n-1; sin embargo, no le presta atención a la orientación de los vectores residuales. Como vmt = 589443426354, entonces sabemos que estas corresponde a la suma de las varrianzas de los p elementos de la matriz.
4. Dibuja las elipsoides sólidas para las tres matrices siguientes y determina los valores de los ejes mayores y menores
5. Archivo del INEGI
a. Configura la matriz X para poder operar con ella
# datos <- read.csv("D:\\ITAM\\Aplicada III\\Tareas\\HW2\\INEGIConstruccion2017.csv", header=FALSE)
datos <- read.csv(".\\INEGIConstruccion2017.csv", header=FALSE)
datos <- datos[-1,]
names(datos) <- as.matrix(datos[1,]) # Tomo primer renglón
datos <- datos[-1,] # Elimino el primer renglón
datos[] <- lapply(datos, function(x) type.convert(as.character(x))) # Primera columna names(datos) se vuelve el header
# Datos de enero 2017
datos <- datos %>% filter(Periodo == "2017/01")
head(datos)
datosTotalesNac <- datos[,str_detect(names(datos), "Total nacional")]
# Horas trabajadas (dependiente + no dependiente, o lo mismo que es la suma de los totales por estado)
hrasTrabajadas <- datosTotalesNac %>% select(2,6) #dependiente y no dependiente
# x1: total de horas trabajadas
sumaHorasT <- hrasTrabajadas[,1]+hrasTrabajadas[,2]
#x2: valor total de producción
totalProd <- datos[,str_detect(names(datos), "tipo de obra > Total Total")]
#x3: total de horas trabajadas Dependiente
horasDep <- hrasTrabajadas[,1]
#x4: Obreros Dependiente
obrerosDep <- datosTotalesNac[,str_detect(names(datosTotalesNac), "Obreros")]
#x5: Empleados Dependiente
empDep <- datosTotalesNac[,str_detect(names(datosTotalesNac), "Empleados")]
#x6: Propietarios Dependiente
propDep <- datosTotalesNac[,str_detect(names(datosTotalesNac), "Propietarios")]
#x7: total de horas trabajadas No dependiente
horasNoDep <- hrasTrabajadas[,2]
(X <- c(sumaHorasT, totalProd, horasDep, obrerosDep, empDep, propDep, horasNoDep))
## [1] 129460.750 33007656.590 107742.613 84562.852 21536.763
## [6] 1642.998 21718.137
b. Calcula el vector de medias y la matriz de covarianzas de la matrix X
#Si consideramos la X como descrita arriba, el vector de medias es el mismo que el vector X